from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect
from Washer.views import setpwd
from Washer.models import Users
from WashApp.models import Washers
from Washer.models import Order
from Community.models import Note


# Create your views here.
# 首页
def index(request):
    users = Users.objects.all()  # 查询所有用户
    washers = Washers.objects.all()  # 查询所有设备
    order = Order.objects.all()  # 查询所有订单
    note = Note.objects.all()  # 查询所有留言
    return render(request, 'Admin/index.html', locals())  # 返回管理员首页，并将查询到的数据传到首页


# 删除用户
def deluser(request, user_id):
    Users.objects.filter(uid=user_id).delete()  # 删除用户ID为传入的参数的这条的用户记录
    return HttpResponseRedirect('/superadmin')  # 重定向到管理员首页


# 删除设备
def delwasher(request, washer_id):
    Washers.objects.filter(wmid=washer_id).delete()  # 删除设备ID为传入的参数的这条设备的记录
    return HttpResponseRedirect('/superadmin')  # 重定向到管理员首页


# 删除订单
def delorder(request, order_id):
    Order.objects.filter(id=order_id).delete()  # 删除订单ID为传入的参数的这条订单的记录
    return HttpResponseRedirect('/superadmin')  # 重定向到管理员首页


# 删除留言
def delnote(request, note_id, note_title):
    Note.objects.filter(id=note_id).filter(title=note_title).delete()  # 删除一条留言
    return HttpResponseRedirect('/superadmin')  # 重定向到管理员首页


# 修改用户信息
def edituser(request, user_id):
    user = Users.objects.filter(uid=user_id).all()  # 查询获取用户ID为传入的参数的这一条记录
    if request.method == 'GET':  # get方法拿edituser页面
        return render(request, 'Admin/edituser.html', locals())
    elif request.method == 'POST':  # post方法处理表单数据
        username = request.POST.get('username')  # 取用户名
        usergender = request.POST.get('usergender')  # 取用户性别
        userage = request.POST.get('userage')  # 取用户年龄
        userpwd = request.POST.get('userpassword')  # 取用户明文密码
        userpassword = setpwd(userpwd)  # 将明文密码通过MD5算法处理成32位散列码
        Users.objects.filter(uid=user_id).update(uname=username, ugender=usergender, uage=userage,
                                                 upassword=userpassword)  # 更新数据
        return HttpResponseRedirect('/superadmin')  # 重定向到管理员首页


# 修改设备信息
def editwasher(request, washer_id):
    washer = Washers.objects.filter(wmid=washer_id).all()  # 查询获取设备ID为传入的参数的这一条记录
    if request.method == 'GET':  # get方法拿editwasher页面
        return render(request, 'Admin/editwasher.html', locals())
    elif request.method == 'POST':  # post方法处理表单数据
        washerstate = request.POST.get('washerstate')  # 取设备状态
        Washers.objects.filter(wmid=washer_id).update(wmstate=washerstate)  # 更新设备状态
        return HttpResponseRedirect('/superadmin')  # 重定向到管理员首页


# 修改留言信息
def editnote(request, note_id, note_title):
    note = Note.objects.filter(id=note_id).all()
    if request.method == 'GET':  # get方法拿editnote页面
        return render(request, 'Admin/editnote.html', locals())
    elif request.method == 'POST':  # post方法处理表单数据
        userid = request.POST.get('userid')  # 取用户ID
        tit = request.POST.get('title')  # 取留言标题
        cont = request.POST.get('content')  # 取留言内容
        try:  # 这里会有一个更新数据失败，是因为输入的用户不存在所导致
            Note.objects.filter(id=note_id).update(title=tit, content=cont, user_id=userid)  # 更新数据
        except Exception as e:  # 抛出异常
            print(e)  # 在控制台打印异常
            return HttpResponse('<h1 style="color:red;">数据更改失败！</h1>'
                                '<h1 style="color:red;">输入的用户ID不合法或不存在！</h1>'
                                '<h1 style="color:red;">所以无法将更改后的内容添加到数据库中！</h1>'
                                '<h1 style="color:red;">请返回重新编辑内容！</h1>'
                                )  # 返回一个页面提示，让管理员返回重新编辑
        return HttpResponseRedirect('/superadmin')  # 重定向到管理员首页
